--- annotated foo = empty generates wrong java code unless same type variables as in original are used
module tests.comp.Issue345 where

class Leer a where
    wüst :: a b

instance Leer Maybe where
    wüst = Nothing

--- this compiles
leer :: Leer x ⇒ x y
leer = wüst

--- this didn't (because ListEmpty is special)
empty' :: ListEmpty  α ⇒  α y
empty' = empty


--- neither this one
epair ∷ (ListEmpty m, ListEmpty n) ⇒ (m Int, n Bool)
epair = (empty, empty)

kopf ∷ ListView b ⇒ (b a → a, Int)
kopf  = (head, 32) 


main = println (empty :: [String])